package com.wang.springbootinit.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wang.springbootinit.model.dto.ExemptionQueryDTO;
import com.wang.springbootinit.model.dto.ExemptionReviewDTO;
import com.wang.springbootinit.model.entity.Exemption;
import com.wang.springbootinit.model.entity.Grade;
import com.wang.springbootinit.model.vo.ExemptionVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 免测申请服务接口
 * 提供免测申请的提交、审核等服务
 */
public interface ExemptionService extends IService<Exemption> {
    /**
     * 提交免测申请
     * @param exemption 申请信息
     * @return 操作结果
     */
    boolean submitExemption(Exemption exemption,HttpServletRequest request);
    
    /**
     * 审核免测申请
     * @param reviewDTO 审核信息
     * @return 操作结果
     */
    boolean reviewExemption(ExemptionReviewDTO reviewDTO,HttpServletRequest request);
    
    /**
     * 分页查询免测申请
     * @param queryDTO 查询参数
     * @return 申请列表
     */
    Page<ExemptionVO> getExemptionPage(ExemptionQueryDTO queryDTO);
    
    /**
     * 获取申请详情
     * @param exemptionId 申请ID
     * @return 申请详情
     */
    Exemption getExemptionById(Long exemptionId);
    
    /**
     * 获取学生的申请记录
     * @param studentId 学生ID
     * @return 申请记录列表
     */
    List<Exemption> getMyExemptions(Long studentId);

    /**
     * 免测审核
     * @param reviewDTO
     * @return
     */
    boolean audit(ExemptionReviewDTO reviewDTO);

    /**
     * 获取当前登陆人的免测申请列表
     * @param request
     * @return
     */
    List<ExemptionVO> getCurrentList(HttpServletRequest request);
}